iT邦幫忙

2

Next.js - 用 birc-axios 一鍵打造 Next.js 企業級網路請求架構

  • 分享至 

  • xImage
  •  

告別重複的 API 樣板程式碼!

在開發 Next.js 專案時,常常覺得每次都要重新設定 Axios 實例、寫攔截器(Interceptors)、處理 Token、定義統一的回應型別很繁瑣,如果你希望能有一套開箱即用、結構清晰且型別安全(TypeScript)的 API 模組化架構,那麼我製作的這個輕量級套件 birc-axios 或許能成為你日常開發中的最佳小幫手~!

這是我第一次嘗試寫 npm 套件,如果有修改建議或可以更好的地方歡迎跟我說!!


birc-axios?

birc-axios 是一個專為 Next.js(或一般前端專案)設計的 Axios 樣板生成工具。只要在專案根目錄下一行指令,它就會自動幫你建立好一整套經過封裝、具備完整錯誤處理與 Token 自動夾帶機制的 API 基礎架構。

1. 安裝與初始化

在你的專案根目錄直接執行以下指令:

npx birc-axios

執行後,它會在你的專案中自動建立 services/ 目錄,結構如下:

services/
├── api.ts
├── request.ts
├── response.ts
└── example/
    ├── exampleAPI.ts
    └── exampleType.ts

2. 設定環境變數

在你的專案 .env(或 .env.local)檔案中設定你的 API 基礎網址:

NEXT_PUBLIC_API_BASE_URL=https://api.example.com

(註:專案需要支援 @/services/... 的路徑別名,Next.js 預設即支援)


兩種靈活的 API 呼叫風格

birc-axios 提供了兩種實用風格,讓你可以根據專案需求自由搭配:

風格一:直接呼叫 URL (request.ts)

適合不想為每個端點(Endpoint)都建立檔案、想快速發送請求的場景。

import request from '@/services/request';

type User = {
  id: string;
  name: string;
};

// 直接傳入路徑與型別
const user = await request.get<User>('/users/1');

if (user.result) {
  console.log(user.data);
}

風格二:模組化特徵寫法 (feature-based)

適合大型專案,將同一個業務邏輯(例如優惠券、會員等)收斂在同一個檔案中,方便維護與管理。

// 參考 services/example/exampleAPI.ts 的寫法
import CouponAPI from '@/services/example/exampleAPI';

const coupon = await CouponAPI.get('coupon-id');
const list = await CouponAPI.search();


自動化功能

  • 登入狀態彈性處理:api.ts 會自動檢查 localStorage 是否有 token。如果有,發送請求時會自動帶上 Authorization: Bearer <token>;如果沒有,則會以一般公開請求發送,不需要為了公開頁面額外做處理。
  • 統一的回應格式 (Response<T>):
欄位 說明
result 請求是否成功
errorCode 錯誤代碼
message 訊息
data 回應資料本體
status HTTP 狀態碼

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言